// 对axios做封装
// 请求拦截器
// 错误处理

import axios from 'axios'
import { checkStatus } from './utils'
axios.interceptors.request.use((config) => {
  // 请求头拦截器
  // 处理token
  const token = window.sessionStorage.getItem('token')
  const headers = {}
  if (token) {
    headers.authorization = 'Bearer ' + token
  }
  return {
    ...config,
    ...headers,
  }
})

// 实例添加响应拦截器
axios.interceptors.response.use(
  function(response) {
    // 对响应数据做处理，以下根据实际数据结构改动！！...

    // const { reason_code } = response.data || {};
    // if (reason_code === '001') { // 请求超时，跳转登录页
    //   const instance = Toast('请求超时，即将跳转到登录页面...');
    //   setTimeout(() => {
    //     instance.close();
    //     window.location.href = '/login';
    //   }, 3000)
    // }
    return Promise.resolve(checkStatus(response))
  },
  function(error) {
    // 对响应错误做处理...
    if (error.response) {
      return Promise.reject(checkStatus(error.response))
    } else if (
      error.code == 'ECONNABORTED' &&
      error.message.indexOf('timeout') != -1
    ) {
      return Promise.reject({ msg: '请求超时' })
    } else {
      return Promise.reject({})
    }
  }
)

export default axios
